﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Collections;
using System.Text;
using System.Data.SqlClient;
using System.Data;

namespace QuaManSys.Rights
{
    public partial class MenuAuth : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            BindModules();
        }

        /// <summary>
        /// 获取模块权限列表
        /// </summary>
        protected void BindModules()
        {
            using (QuaManSysEntities entity = new QuaManSysEntities())
            {
                var queryMenu = from q in entity.SysMenu
                                orderby q.Id
                                select q;

                ModuleView.DataSource = queryMenu.ToList();
                ModuleView.DataBind();
                
            }
        }

        //protected void ModuleView_RowDataBound(object sender, GridViewRowEventArgs e)
        //{
        //    if (e.Row.RowType == DataControlRowType.DataRow)
        //    {

        //        CheckBoxList AuthorityList_Grant = (CheckBoxList)e.Row.FindControl("AuthorityList_Grant");
        //        CheckBoxList AuthorityList_Deny = (CheckBoxList)e.Row.FindControl("AuthorityList_Deny");
        //        Label lab_ID = (Label)e.Row.FindControl("lab_ID");
        //        Label lab_Verify = (Label)e.Row.FindControl("lab_Verify");

        //        using (QuaManSysEntities entity = new QuaManSysEntities())
        //        {
        //            var queryAllOper = from q in entity.SysOperation
        //                               orderby q.Id
        //                               select q;

        //            var queryOper = from p in entity.SysOperation
        //                               join q in entity.SysMenuSysOperation
        //                               on p.Id equals q.SysOperationId
        //                               where q.SysMenuId == lab_ID.Text
        //                               orderby q.SysOperationId
        //                               select p;

        //            //var queryAllOper = from q in entity.SysMenuSysOperation
        //            //                   join p in entity.SysOperation    
        //            //                   on q.SysMenuId equals p.Id
        //            //                   where q.SysMenuId == lab_ID.Text
        //            //                   select new {q.SysOperationId,p.Id, p.Name};

        //            int n = queryAllOper.Count();

        //            string[] vstate = new string[n];
        //            int i = 0;
        //            foreach (var item in queryAllOper)
        //            {
        //                AuthorityList_Grant.Items.Add(new ListItem(item.Name));
        //                AuthorityList_Deny.Items.Add(new ListItem(item.Name));
        //                AuthorityList_Grant.Items[i].Enabled = false;
        //                AuthorityList_Deny.Items[i].Enabled = false;
        //                int j = 0;
        //                foreach (var it in queryOper)
        //                {
        //                    if (it == item)
        //                    {
        //                        AuthorityList_Grant.Items[i].Enabled = true;
        //                        AuthorityList_Deny.Items[i].Enabled = true;
        //                        break;
        //                    }
        //                    j++;
        //                }
        //                vstate[i] = "0";//初始状态数组;
        //                i++;
        //            }
        //            AuthorityList_Grant.DataBind();
        //            lab_Verify.Text = StringArrayToString(vstate, ',');
        //        }              
        //    }
        //}

        ///// <summary>
        ///// 将字符串数组转成字符串
        ///// </summary>
        ///// <param name="strArray">字符串数组</param>        
        ///// <param name="Separator">分隔符</param>
        ///// <returns>字符串</returns>
        //public static string StringArrayToString(string[] strArray, char Separator)
        //{
        //    string str = string.Empty;
        //    for (int i = 0; i < strArray.Length; i++)
        //    {
        //        str = str + strArray[i] + Separator;
        //    }
        //    return str.Substring(0, str.Length - 1);
        //}

        //protected void ModuleView_SelectedIndexChanging(object sender, GridViewSelectEventArgs e)
        //{
        //    ArrayList list = new ArrayList();//建立事务列表
            
        //    CheckBoxList calg = (CheckBoxList)this.ModuleView.Rows[e.NewSelectedIndex].Cells[1].FindControl("AuthorityList_Grant");
        //    CheckBoxList cald = (CheckBoxList)this.ModuleView.Rows[e.NewSelectedIndex].Cells[1].FindControl("AuthorityList_Deny");
        //    Label lab_Verify = (Label)this.ModuleView.Rows[e.NewSelectedIndex].Cells[0].FindControl("lab_Verify");
        //    string[] vstate = lab_Verify.Text.Split(',');//获取原始状态

        //    for (int i = 0; i < calg.Items.Count; i++)
        //    {
        //        if (calg.Items[i].Enabled)
        //        {
        //            if (calg.Items[i].Selected)
        //            {
        //                if (vstate[i] != "1")//检查数据有没有变化
        //                {
        //                    string item = string.Empty;
        //                    item = item + UID.Text + "|"
        //                        + this.ModuleView.DataKeys[e.NewSelectedIndex].Values[0].ToString() + "|"
        //                        + calg.Items[i].Value + "|1";//设置为1，加入允许权限
        //                    list.Add(item);
        //                }
        //            }
        //            else if (cald.Items[i].Selected)
        //            {
        //                string item = string.Empty;
        //                item = item + UID.Text + "|"
        //                    + this.ModuleView.DataKeys[e.NewSelectedIndex].Values[0].ToString() + "|"
        //                    + cald.Items[i].Value + "|0";//设置为0，加入禁止权限
        //                list.Add(item);
        //            }
        //            else
        //            {
        //                if (vstate[i] != "0")//检查数据有没有变化
        //                {
        //                    string item = string.Empty;
        //                    item = item + UID.Text + "|"
        //                        + this.ModuleView.DataKeys[e.NewSelectedIndex].Values[0].ToString() + "|"
        //                        + cald.Items[i].Value + "|2";//设置为0，删除权限
        //                    list.Add(item);
        //                }
        //            }
        //        }
        //    }
        //    if (UpdateUserAuthority(list))
        //    {
        //        BindModules();
        //        strinfo.InnerHtml = errinfo("更新成功！");
        //        strinfo.Visible = true;
        //    }
        //    else
        //    {
        //        strinfo.InnerHtml = errinfo("更新失败！");
        //        strinfo.Visible = true;
        //    }
        //}

        //private bool UpdateUserAuthority(ArrayList list)
        //{
        //    throw new NotImplementedException();
        //}


        //protected void btn_AllSave_Click(object sender, EventArgs e)
        //{

        //    ArrayList list = new ArrayList();//建立事务列表
        //    for (int i = 0; i <= ModuleView.Rows.Count - 1; i++)
        //    {
        //        CheckBoxList calg = (CheckBoxList)this.ModuleView.Rows[i].Cells[1].FindControl("AuthorityList_Grant");
        //        CheckBoxList cald = (CheckBoxList)this.ModuleView.Rows[i].Cells[1].FindControl("AuthorityList_Deny");
        //        Label lab_Verify = (Label)this.ModuleView.Rows[i].Cells[0].FindControl("lab_Verify");
        //        string[] vstate = lab_Verify.Text.Split(',');//获取原始状态

        //        for (int j = 0; j < calg.Items.Count; j++)
        //        {
        //            if (calg.Items[j].Selected)
        //            {
        //                if (vstate[j] != "1")//检查数据有没有变化
        //                {
        //                    string item = string.Empty;
        //                    item = item + UID.Text + "|"
        //                        + this.ModuleView.DataKeys[i].Values[0].ToString() + "|"
        //                        + calg.Items[j].Value + "|1";//设置为1，加入允许权限
        //                    list.Add(item);
        //                }
        //            }
        //            else if (cald.Items[j].Selected)
        //            {
        //                string item = string.Empty;
        //                item = item + UID.Text + "|"
        //                    + this.ModuleView.DataKeys[i].Values[0].ToString() + "|"
        //                    + cald.Items[j].Value + "|0";//设置为0，加入禁止权限
        //                list.Add(item);
        //            }
        //            else
        //            {
        //                if (vstate[j] != "0")//检查数据有没有变化
        //                {
        //                    string item = string.Empty;
        //                    item = item + UID.Text + "|"
        //                        + this.ModuleView.DataKeys[i].Values[0].ToString() + "|"
        //                        + cald.Items[j].Value + "|2";//设置为0，删除权限
        //                    list.Add(item);
        //                }
        //            }
        //        }
        //    }

        //    if (UpdateUserAuthority(list))
        //    {
        //        BindModules();
        //        strinfo.InnerHtml = errinfo("设置成功！");
        //        strinfo.Visible = true;
        //    }
        //    else
        //    {
        //        strinfo.InnerHtml = errinfo("设置操作失败！");
        //        strinfo.Visible = true;
        //    }

        //}


        ///// <summary>
        ///// 返回错误信息格式
        ///// </summary>
        ///// <param name="s"></param>
        ///// <returns></returns>
        //public static string errinfo(string s)
        //{
        //    return "<ul><li>" + s + "</li></ul>";
        //}
    }
}